# USB host ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- USB host refers to a system or hardware component capable of controlling and managing USB devices. It provides power, data transfer, and management functions for connected USB devices such as flash drives, keyboards, and mice. # Quectel Pi H1 USB interface specifications - USB 2.0 Type‑A × 2 — Maximum transfer rate: 480 Mbps - USB 3.1 Type‑C × 1 — Maximum transfer rate: 5 Gbps, backward‑compatible with USB 2.0 # Hardware interface To test the USB host functionality, you can verify whether connected USB devices work properly and test the USB storage performance. ```{image} images/image_WJe6b3UGFodcBBxy990cdTmsndf.webp :width: 645px :height: 360px ``` # Function usage ## View all input devices Execute the following command to list all input devices recognized by the system: ```plaintext cat /proc/bus/input/devices ``` Example output: ```plaintext I: Bus=0000 Vendor=0000 Product=0000 Version=0001 N: Name="pm8xxx_vib_ffmemless" P: Phys= S: Sysfs=/devices/platform/soc@0/c440000.spmi/spmi-0/0-09/c440000.spmi:pmic@9:pm7250b-vib@5300/input/input0 U: Uniq= H: Handlers=event0 B: PROP=0 B: EV=200001 B: FF=107030000 0 ``` > Key parameters: > - **Name**:Device name (e.g., mouse or keyboard) > - **Handlers**:The event interface corresponding to the device ## View USB devices using `lsusb` You can connect devices such as card readers, keyboards, and mice to test whether the USB port detects and manages them correctly. **When no USB peripheral is connected** ```plaintext lsusb ``` Example output: ```plaintext Bus 001 Device 002: ID 1a86:8091 QinHeng Electronics USB HUB Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub ``` **When USB devices are connected** ```plaintext lsusb ``` Example output (taking keyboard and mounse as examples): ```plaintext Bus 001 Device 005: ID 17ef:6099 Lenovo Lenovo Traditional USB Keyboard Bus 001 Device 004: ID 17ef:608d Lenovo Optical Mouse Bus 001 Device 002: ID 1a86:8091 QinHeng Electronics USB HUB Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub ``` ## View device plug/unplug logs using `dmesg` ```plaintext sudo dmesg | tail -n 20 ``` This command displays the latest 20 lines of kernel logs, useful for monitoring device insertions, removals, and driver loading events. # USB flash drive read/write ## Identify the storage device After inserting a USB flash drive, use `lsblk` to confirm its device name: ```bash lsblk ``` Example output: ```plaintext sda 8:0 0 116.1G 0 disk |-sda1 8:1 0 512M 0 part /efi |-sda2 8:2 0 30M 0 part /var/persist `-sda3 8:3 0 115.6G 0 part / sdb 8:16 0 8M 0 disk |-sdb1 8:17 0 3.5M 0 part |-sdb2 8:18 0 512K 0 part `-sdb3 8:19 0 3.5M 0 part sdc 8:32 0 8M 0 disk |-sdc1 8:33 0 3.5M 0 part |-sdc2 8:34 0 512K 0 part `-sdc3 8:35 0 3.5M 0 part sdd 8:48 0 32M 0 disk |-sdd1 8:49 0 104K 0 part |-sdd2 8:50 0 128K 0 part |-sdd3 8:51 0 1M 0 part |-sdd4 8:52 0 1M 0 part `-sdd5 8:53 0 1M 0 part sde 8:64 0 3G 0 disk |-sde1 8:65 0 512K 0 part |-sde2 8:66 0 64M 0 part |-sde3 8:67 0 256K 0 part |-sde4 8:68 0 2M 0 part |-sde5 8:69 0 5M 0 part |-sde6 8:70 0 4M 0 part |-sde7 8:71 0 8M 0 part |-sde8 8:72 0 4M 0 part |-sde9 8:73 0 32M 0 part |-sde10 8:74 0 128K 0 part |-sde11 8:75 0 80K 0 part |-sde12 8:76 0 2M 0 part |-sde13 8:77 0 2M 0 part |-sde14 8:78 0 128K 0 part |-sde15 8:79 0 32K 0 part |-sde16 259:0 0 1M 0 part |-sde17 259:1 0 256K 0 part |-sde18 259:2 0 512K 0 part |-sde19 259:3 0 256K 0 part |-sde20 259:4 0 64M 0 part |-sde21 259:5 0 2M 0 part |-sde22 259:6 0 5M 0 part |-sde23 259:7 0 4M 0 part |-sde24 259:8 0 8M 0 part |-sde25 259:9 0 4M 0 part |-sde26 259:10 0 32M 0 part |-sde27 259:11 0 128K 0 part |-sde28 259:12 0 80K 0 part |-sde29 259:13 0 2M 0 part |-sde30 259:14 0 2M 0 part |-sde31 259:15 0 128K 0 part |-sde32 259:16 0 32K 0 part |-sde33 259:17 0 1M 0 part |-sde34 259:18 0 256K 0 part |-sde35 259:19 0 4K 0 part |-sde36 259:20 0 4K 0 part |-sde37 259:21 0 4K 0 part |-sde38 259:22 0 16M 0 part |-sde39 259:23 0 30M 0 part |-sde40 259:24 0 1M 0 part |-sde41 259:25 0 32.6M 0 part |-sde42 259:26 0 4K 0 part |-sde43 259:27 0 4K 0 part |-sde44 259:28 0 1M 0 part |-sde45 259:29 0 8M 0 part |-sde46 259:30 0 40M 0 part |-sde47 259:31 0 512M 0 part |-sde48 259:32 0 28K 0 part |-sde49 259:33 0 512K 0 part |-sde50 259:34 0 1M 0 part `-sde51 259:35 0 32.6M 0 part sdf 8:80 0 32M 0 disk |-sdf1 8:81 0 3M 0 part |-sdf2 8:82 0 3M 0 part |-sdf3 8:83 0 3M 0 part `-sdf4 8:84 0 128K 0 part sdg 8:96 1 7.5G 0 disk `-sdg1 8:97 1 7.5G 0 part /mnt/sdcard1 zram0 253:0 0 3.8G 0 disk [SWAP] ``` Note: In the above example, the USB drive is `sdg`. Replace with your actual device name during testing. ## Test read/write performance Use the `dd` command (`dd` is used to copy and convert files) to test the USB flash drive performance. ## Test write speed ```plaintext sudo dd if=/dev/zero of=/dev/sdg bs=1M count=100 ``` **Parameter description:** - `if=/dev/zero` : Specifies the input file as `/dev/zero`, a special file that provides an infinite stream of zero bytes. - `of=/dev/sdg` : Specifies the output file as `/dev/sdg`, i.e., the USB flash drive device. - `bs=1M` : Sets the block size to 1 MB. - `count=100` : Specifies copying 100 blocks. This command writes 100 MB of zero-byte data to the USB flash drive and displays the write speed. Example output: ```plaintext 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 0.0367901 s, 2.9 GB/s ``` ## Test read speed ```plaintext sudo dd if=/dev/sdg of=/dev/null bs=1M count=100 ``` **Parameter description:** - `if=/dev/sda` : Specifies the input file as `/dev/sda`, i.e., the USB flash drive device. - `of=/dev/null` : Specifies the output file as `/dev/null`, a special file that discards all written data. - `bs=1M` : Sets the block size to 1 MB. - `count=100` : Specifies copying 100 blocks. This command reads 100 MB of data from the USB flash drive to `/dev/null` and displays the read speed. Example output: ```plaintext 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 4.97715 s, 21.1 MB/s ```